package servicios;

import java.util.List;

import persistencia.ClienteDAO;
import persistencia.PersistentException;
import dominio.Cliente;
import dominio.Pedido;

public class ServiciosCliente extends BusinessService{

	public static Cliente buscarXId(int idCliente) throws GenericBusinessException {
		try {
			return ClienteDAO.buscarPorId(idCliente);
		} catch (PersistentException e) {
			 throw new SystemException(e.getMessage());
		}
	}

	public static List<Cliente> buscarXNombre(String nombre) throws GenericBusinessException {
		try {
			return ClienteDAO.buscarPorNombre(nombre);
		} catch (PersistentException e) {
			 throw new SystemException(e.getMessage());
		}
	}

	public static List<Object> listarClientes() throws GenericBusinessException{
		try {
			ClienteDAO cd=new ClienteDAO();
			List<Object> clientes=cd.selectAll();
			return clientes;
		} catch (PersistentException e) {
			 throw new SystemException(e.getMessage());
		}
	}

	public static void guardar(Cliente unCliente)  throws GenericBusinessException{
		ClienteDAO cd=new ClienteDAO();
		try {
			Cliente cliente=ClienteDAO.buscarPorId(unCliente.getId());
			if(cliente!=null){
				cd.update(unCliente);
			}else{
				cd.insert(unCliente);
			}
		
		}catch (PersistentException pex){
			 throw new SystemException(pex.getMessage());
		}

	}

	public static boolean eliminar(Cliente unCliente) throws GenericBusinessException{
		ClienteDAO cd=new ClienteDAO();
		try {
			List<Pedido> pedidos=ServiciosPedido.getPedidos(unCliente);
			if(pedidos.size()==0){
				cd.delete(unCliente);
				return true;
			}else{
				return false;
			}
		}catch(PersistentException pex){
			 throw new SystemException(pex.getMessage());
		}
		
	}

	public static Cliente buscarXIdPedido(int idPedido) throws GenericBusinessException {
		try {
			return ClienteDAO.buscarPorIdPedido(idPedido);
		} catch (PersistentException e) {
			 throw new SystemException(e.getMessage());
		}
	}
}
